package model.shelves;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.naming.OperationNotSupportedException;

import model.events.RentalAddedEvent;
import model.events.RentalRemovedEvent;
import model.rentals.Rental;
import model.shelves.criteria.ICriterion;

/**
 * Classe NormalShelf cria uma shelf to tipo Normal que permite ao utente
 * adicionar e remover itens alugados(rentals)
 * @author DCO37
 * 	N.º 42484 Helder Ferreira
 *  N.º 45509 Luis Ferreira
 */
public class NormalShelf extends Shelf{
	// lista de Rentals
	private List<Rental> myRent;
	
	/**
	 * Construtor de Normal Shelf dado um name
	 * @param name - nome da NormalShelf
	 */
	public NormalShelf(String name) {
		super(name);
		myRent = new ArrayList<Rental>();
	}
	
	/**
	 * Iterador de lista myRent
	 */
	@Override
	public Iterator<Rental> iterator() {
		return myRent.iterator();
	}
	
	@Override
	/**
	 * Adiciona um rental a lista de myRent
	 */
	public boolean addRental(Rental rental) 
			throws OperationNotSupportedException {
		
		if (!myRent.contains(rental)){
			myRent.add(rental);
			setChanged();
			notifyObservers(new RentalAddedEvent());
			return true;
		}
		else
			return false;	
	}
	
	@Override
	/**
	 * Remove um rental de myRent
	 */
	public boolean removeRental(Rental rental) 
			throws OperationNotSupportedException{
		
		if (!myRent.contains(rental)){
			myRent.remove(rental);
			setChanged();
			notifyObservers(new RentalRemovedEvent());
			return true;
		}
		else
			return false;		
	}	
	//library itens q podem ser alugador
	//myrentals lista de alugados por utente
	//o utente pode adicionar e removerl pastas
	//utente adiciona e remove item alugados

}
